return TRUE;
}
+
+void
+gtk_accessible_update_children (GtkAccessible *self,
+ GtkAccessible *child,
+ GtkAccessibleChildState state)
+{
+ GtkATContext *context;
+
+ if (GTK_IS_WIDGET (self) &&
+ gtk_widget_get_root (GTK_WIDGET (self)) == NULL)
+ return;
+
+ context = gtk_accessible_get_at_context (self);
+
+ /* propagate changes up from ignored widgets */
+ if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE)
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (gtk_widget_get_parent (GTK_WIDGET (self))));
+
+ if (context == NULL)
+ return;
+
+ gtk_at_context_child_changed (context, state, child);
+ gtk_at_context_update (context);
+}
void gtk_accessible_bounds_changed (GtkAccessible *self);
+void gtk_accessible_update_children (GtkAccessible *self,
+ GtkAccessible *child,
+ GtkAccessibleChildState state);
+
G_END_DECLS
{
}
+static void
+gtk_at_context_real_child_change (GtkATContext *self,
+ GtkAccessibleChildChange change,
+ GtkAccessible *child)
+{
+}
+
static void
gtk_at_context_class_init (GtkATContextClass *klass)
{
klass->state_change = gtk_at_context_real_state_change;
klass->platform_change = gtk_at_context_real_platform_change;
klass->bounds_change = gtk_at_context_real_bounds_change;
+ klass->child_change = gtk_at_context_real_child_change;
/**
* GtkATContext:accessible-role:
{
GTK_AT_CONTEXT_GET_CLASS (self)->bounds_change (self);
}
+
+void
+gtk_at_context_child_changed (GtkATContext *self,
+ GtkAccessibleChildChange change,
+ GtkAccessible *child)
+{
+ GTK_AT_CONTEXT_GET_CLASS (self)->child_change (self, change, child);
+}
GTK_ACCESSIBLE_PLATFORM_CHANGE_FOCUSED = 1 << GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED,
} GtkAccessiblePlatformChange;
+typedef enum {
+ GTK_ACCESSIBLE_CHILD_STATE_ADDED,
+ GTK_ACCESSIBLE_CHILD_STATE_REMOVED
+} GtkAccessibleChildState;
+
+typedef enum {
+ GTK_ACCESSIBLE_CHILD_CHANGE_ADDED = 1 << GTK_ACCESSIBLE_CHILD_STATE_ADDED,
+ GTK_ACCESSIBLE_CHILD_CHANGE_REMOVED = 1 << GTK_ACCESSIBLE_CHILD_STATE_REMOVED
+} GtkAccessibleChildChange;
+
struct _GtkATContext
{
GObject parent_instance;
GtkAccessiblePlatformChange changed_platform);
void (* bounds_change) (GtkATContext *self);
+
+ void (* child_change) (GtkATContext *self,
+ GtkAccessibleChildChange changed_child,
+ GtkAccessible *child);
};
GdkDisplay * gtk_at_context_get_display (GtkATContext *self);
void gtk_at_context_platform_changed (GtkATContext *self,
GtkAccessiblePlatformChange change);
void gtk_at_context_bounds_changed (GtkATContext *self);
+void gtk_at_context_child_changed (GtkATContext *self,
+ GtkAccessibleChildChange change,
+ GtkAccessible *child);
const char * gtk_accessible_property_get_attribute_name (GtkAccessibleProperty property);
const char * gtk_accessible_relation_get_attribute_name (GtkAccessibleRelation relation);